/**
 * Copyright 2008-2009. Chongqing Communications Industry Services Co.,Ltd Information Technology Branch. All rights
 * reserved. <a>http://www.cqcis.com</a>
 */
package com.cq.bd.service;

import java.util.List;
import java.util.Map;

import com.cq.base.domain.Page;
import com.cq.bd.domain.SDepart;
import com.cq.bd.domain.SRegion;

/**
 * 组织部门管理服务
 * 
 * @author huangmy
 * @date   2009-10-5
 */
public interface RegionService {
    public List<SRegion> doGetAllRegions();
    
    /**
     * 获取有效的组织
     * 
     * @return
     */
    public List<SDepart> doGetValidDeparts();
    
    /**
     * 创建组织
     * 
     * @param region
     */
    public void doCreateRegion(SRegion region);
    
    /**
     * 删除
     * 
     * @param region
     */
    public void doDeleteRegion(SRegion region);
    
    /**
     * 修改组织
     * 
     * @param region
     */
    public void doUpdateRegion(SRegion region);
    
    /**
     * 获取组织
     * 
     * @param upperRegionId  上级组织ID, 0 为顶级
     * @return
     */
    public List<SRegion> doGetRegions(Long upperRegionId);
    
    /**
     * 分页查询组织
     * 
     * @param filter
     * @param like
     * @param sort
     * @param pageNo
     * @param pageSize
     * @return
     */
    public Page pageRegions(Map<String, String> filter, Map<String, String> like, Map<String, String> sort, int pageNo, int pageSize);
    
    /**
     * 分页查询部门
     * 
     * @param filter
     * @param like
     * @param sort
     * @param pageNo
     * @param pageSize
     * @return
     */
    public Page pageDeparts(Map<String, String> filter, Map<String, String> like, Map<String, String> sort, int pageNo, int pageSize);
    
    /**
     * 检查组织编码
     * 
     * @param regionCode
     * @return  1 成功, 其他失败
     */
    public int checkRegionCode(String regionCode);
    
    /**
     * 检查部门编码
     * 
     * @param regionCode
     * @return
     */
    public int checkDepartCode(String regionCode);
    
    /**
     * 获取组织
     * 
     * @param regionId
     * @return
     */
    public SRegion doGetRegion(Long regionId);
    
    /**
     * 创建部门
     * 
     * @param depart
     */
    public void doCreateDepart(SDepart depart);
    
    /**
     * 修改部门
     * 
     * @param depart
     */
    public void doUpdateDepart(SDepart depart);
    
    /**
     * 删除部门
     * 
     * @param depart
     */
    public void doDeleteDepart(SDepart depart);
    
    /**
     * 获取所有的部门
     * 
     * @return
     */
    public List<SDepart> doGetDeparts();
    
    /**
     * 组织ID
     * 
     * @param regionId
     * @return
     */
    public List<SDepart> doGetDepartsByRegionId(Long regionId);
    
    /**
     * 获取部门
     * 
     * @param departId
     * @return
     */
    public SDepart doGetDepart(Long departId);
}
